package com.heima.common.exception;

import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.common.enums.AppHttpCodeEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @作者 itcast
 * @创建日期 2021/1/23 9:07
 **/
@RestControllerAdvice  // controller的增强类  用于统一处理异常
@Slf4j
public class ExceptionCatch {
    @ExceptionHandler(CustomException.class)
    public ResponseResult customException(Exception e){
        // 异常是否属于 自定义异常类型
        if(e instanceof CustomException){
            return ((CustomException) e).getResponseResult();
        }
        return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR);
    }
    // 异常处理器  如果抛出了Exception 会被这个处理所处理
    @ExceptionHandler(Exception.class)
    public ResponseResult exceptionHandler(Exception e){
        e.printStackTrace();
        log.error("程序出现异常  ==> {}",e.getMessage());
        return ResponseResult.errorResult(AppHttpCodeEnum.SERVER_ERROR);
    }
}
